// 引入axios
import axios from "axios";
// 引入接口地址
import env from './env'

import {
    Message
} from 'element-ui'

import router from '@/router'


// 封装基本地址
const service = axios.create({
    baseURL: env.prod.baseURL,
    timeout: 5000
})

// 请求拦截器
service.interceptors.request.use((config) => {
    if (config !== "/login") {
        const token = sessionStorage.getItem('token')
        token && (config.headers.Authorization = token)
    }
    return config
}, error => {
    return Promise.reject(error)
})

// 创建响应拦截器
service.interceptors.response.use(res => {
    const {
        meta: {
            msg,
            status: code
        },
        data: result
    } = res.data
    const successArr = [200, 201, 204]
    if (successArr.includes(code)) {
        Message({
            message: msg,
            type: 'success'
        })

        if (res.config.url === '/login') {
            sessionStorage.setItem("token", result.token)
        }
        return result
    }
    Message({
        message: msg,
        type: 'error'
    })
    // 如果tonken变化 重新获取token并跳转到登录页面
    if (msg === '无效token') {
        router.replace('/login')
    }
    return Promise.reject(msg)
}, (error) => {
    return Promise.reject(error)
})

export default service